package irisext

import (
	"github.com/kataras/iris/v12"
)

// Response 接口的应答消息基础格式
type Response struct {
	Status  int         `json:"status"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

// E Echo -- 通用 http json 接口应答
func E(ctx iris.Context, status int, data interface{}) {
	if status != 0 {
		switch v := data.(type) {
		case error:
			Echo(ctx, status, nil, v.Error())
		case string:
			Echo(ctx, status, nil, v)
		default:
			Echo(ctx, status, data, ``)
		}
		return
	}
	Succ(ctx, data)
}

// Echo 通用HTTP RESTFUL接口的Json应答
func Echo(ctx iris.Context, status int, data interface{}, msg string) {
	response := &Response{
		Status:  status,
		Message: msg,
		Data:    data,
	}
	ctx.Header(`Access-Control-Allow-Origin`, `*`)
	ctx.JSON(response)
}

// Succ 成功应答
func Succ(ctx iris.Context, data interface{}) {
	Echo(ctx, 0, data, `success`)
}
